package com.springboot.demo.oom;

/**
 * 逃逸分析
 *
 * 逃逸分析 & 栈上分配 & 标量替换 默认开启 >= 1.6u23
 *
 * 启动时查看JVM参数：-XX:+PrintFlagsFinal
 *
 * 查看GC：-XX:+PrintGC
 *
 * 关闭对象逃逸：-XX:-DoEscapeAnalysis，此时对象就会分配在堆中而不会在栈上
 *
 * 注意：当对象有动态调整大小的集合或者数组时，不会进行栈上分配（即打开了对象逃逸分析也不会起作用）
 *
 * @author supu
 * @since 2020-06-17 14:45
 **/
public class EscapeAnalysis {
    public static void alloc() {
        EscapeObject object = new EscapeObject();
        object.setId(1);
        object.setName("zs");
    }

    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        for (int i = 0; i < 1024 * 1024 * 50; i++) {
            alloc();
        }

        System.out.println("运行耗时：" + (System.currentTimeMillis() - start));
    }
}
